}
}
-static void
-add_path_line (cairo_t *cr,
- gdouble x1,
- gdouble y1,
- gdouble x2,
- gdouble y2)
-{
- /* Adjust endpoints */
- if (y1 == y2)
- {
- y1 += 0.5;
- y2 += 0.5;
- x2 += 1;
- }
- else if (x1 == x2)
- {
- x1 += 0.5;
- x2 += 0.5;
- y2 += 1;
- }
-
- cairo_move_to (cr, x1, y1);
- cairo_line_to (cr, x2, y2);
-}
-
-static void
-gtk_css_image_builtin_draw_grip (GtkCssImage *image,
- cairo_t *cr,
- double width,
- double height,
- GtkCssImageBuiltinType image_type)
-{
- GtkCssImageBuiltin *builtin = GTK_CSS_IMAGE_BUILTIN (image);
- GdkRGBA lighter, darker;
-
- cairo_set_line_width (cr, 1.0);
-
- color_shade (&builtin->bg_color, 0.7, &darker);
- color_shade (&builtin->bg_color, 1.3, &lighter);
-
- /* align drawing area to the connected side */
- if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_LEFT)
- {
- if (height < width)
- width = height;
- }
- else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_TOPLEFT)
- {
- if (width < height)
- height = width;
- else if (height < width)
- width = height;
- }
- else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMLEFT)
- {
- /* make it square, aligning to bottom left */
- if (width < height)
- {
- cairo_translate (cr, 0, height - width);
- height = width;
- }
- else if (height < width)
- width = height;
- }
- else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_RIGHT)
- {
- /* aligning to right */
- if (height < width)
- {
- cairo_translate (cr, width - height, 0);
- width = height;
- }
- }
- else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_TOPRIGHT)
- {
- if (width < height)
- height = width;
- else if (height < width)
- {
- cairo_translate (cr, width - height, 0);
- width = height;
- }
- }
- else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMRIGHT)
- {
- /* make it square, aligning to bottom right */
- if (width < height)
- {
- cairo_translate (cr, 0, height - width);
- height = width;
- }
- else if (height < width)
- {
- cairo_translate (cr, width - height, 0);
- width = height;
- }
- }
- else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_TOP)
- {
- if (width < height)
- height = width;
- }
- else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOM)
- {
- /* align to bottom */
- if (width < height)
- {
- cairo_translate (cr, 0, height - width);
- height = width;
- }
- }
- else
- g_assert_not_reached ();
-
- if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_LEFT ||
- image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_RIGHT)
- {
- gint xi;
-
- xi = 0;
-
- while (xi < width)
- {
- gdk_cairo_set_source_rgba (cr, &lighter);
- add_path_line (cr, 0, 0, 0, height);
- cairo_stroke (cr);
- xi++;
-
- gdk_cairo_set_source_rgba (cr, &darker);
- add_path_line (cr, xi, 0, xi, height);
- cairo_stroke (cr);
- xi += 2;
- }
- }
- else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_TOP ||
- image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOM)
- {
- gint yi;
-
- yi = 0;
-
- while (yi < height)
- {
- gdk_cairo_set_source_rgba (cr, &lighter);
- add_path_line (cr, 0, yi, width, yi);
- cairo_stroke (cr);
- yi++;
-
- gdk_cairo_set_source_rgba (cr, &darker);
- add_path_line (cr, 0, yi, width, yi);
- cairo_stroke (cr);
- yi += 2;
- }
- }
- else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_TOPLEFT)
- {
- gint xi, yi;
-
- xi = width;
- yi = height;
-
- while (xi > 3)
- {
- gdk_cairo_set_source_rgba (cr, &darker);
- add_path_line (cr, xi, 0, 0, yi);
- cairo_stroke (cr);
-
- --xi;
- --yi;
-
- add_path_line (cr, xi, 0, 0, yi);
- cairo_stroke (cr);
-
- --xi;
- --yi;
-
- gdk_cairo_set_source_rgba (cr, &lighter);
- add_path_line (cr, xi, 0, 0, yi);
- cairo_stroke (cr);
-
- xi -= 3;
- yi -= 3;
- }
- }
- else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_TOPRIGHT)
- {
- gint xi, yi;
-
- xi = 0;
- yi = height;
-
- while (xi < (width - 3))
- {
- gdk_cairo_set_source_rgba (cr, &lighter);
- add_path_line (cr, xi, 0, width, yi);
- cairo_stroke (cr);
-
- ++xi;
- --yi;
-
- gdk_cairo_set_source_rgba (cr, &darker);
- add_path_line (cr, xi, 0, width, yi);
- cairo_stroke (cr);
-
- ++xi;
- --yi;
-
- add_path_line (cr, xi, 0, width, yi);
- cairo_stroke (cr);
-
- xi += 3;
- yi -= 3;
- }
- }
- else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMLEFT)
- {
- gint xi, yi;
-
- xi = width;
- yi = 0;
-
- while (xi > 3)
- {
- gdk_cairo_set_source_rgba (cr, &darker);
- add_path_line (cr, 0, yi, xi, height);
- cairo_stroke (cr);
-
- --xi;
- ++yi;
-
- add_path_line (cr, 0, yi, xi, height);
- cairo_stroke (cr);
-
- --xi;
- ++yi;
-
- gdk_cairo_set_source_rgba (cr, &lighter);
- add_path_line (cr, 0, yi, xi, height);
- cairo_stroke (cr);
-
- xi -= 3;
- yi += 3;
- }
- }
- else if (image_type == GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMRIGHT)
- {
- gint xi, yi;
-
- xi = 0;
- yi = 0;
-
- while (xi < (width - 3))
- {
- gdk_cairo_set_source_rgba (cr, &lighter);
- add_path_line (cr, xi, height, width, yi);
- cairo_stroke (cr);
-
- ++xi;
- ++yi;
-
- gdk_cairo_set_source_rgba (cr, &darker);
- add_path_line (cr, xi, height, width, yi);
- cairo_stroke (cr);
-
- ++xi;
- ++yi;
-
- add_path_line (cr, xi, height, width, yi);
- cairo_stroke (cr);
-
- xi += 3;
- yi += 3;
- }
- }
-}
-
static void
gtk_css_image_builtin_draw_pane_separator (GtkCssImage *image,
cairo_t *cr,
width, height,
FALSE, TRUE, TRUE);
break;
- case GTK_CSS_IMAGE_BUILTIN_GRIP_TOPLEFT:
- case GTK_CSS_IMAGE_BUILTIN_GRIP_TOP:
- case GTK_CSS_IMAGE_BUILTIN_GRIP_TOPRIGHT:
- case GTK_CSS_IMAGE_BUILTIN_GRIP_RIGHT:
- case GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMRIGHT:
- case GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOM:
- case GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMLEFT:
- case GTK_CSS_IMAGE_BUILTIN_GRIP_LEFT:
- gtk_css_image_builtin_draw_grip (image, cr,
- width, height,
- image_type);
- break;
case GTK_CSS_IMAGE_BUILTIN_PANE_SEPARATOR:
gtk_css_image_builtin_draw_pane_separator (image, cr,
width, height);
gtk_render_background (context, cr, x, y, width, height);
gtk_render_frame (context, cr, x, y, width, height);
- if (gtk_style_context_has_class (context, GTK_STYLE_CLASS_GRIP))
- {
- GtkJunctionSides sides = gtk_style_context_get_junction_sides (context);
-
- /* order is important here for when too many (or too few) sides are set */
- if ((sides & GTK_JUNCTION_CORNER_BOTTOMRIGHT) == GTK_JUNCTION_CORNER_BOTTOMRIGHT)
- type = GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMRIGHT;
- else if ((sides & GTK_JUNCTION_CORNER_TOPRIGHT) == GTK_JUNCTION_CORNER_TOPRIGHT)
- type = GTK_CSS_IMAGE_BUILTIN_GRIP_TOPRIGHT;
- else if ((sides & GTK_JUNCTION_CORNER_BOTTOMLEFT) == GTK_JUNCTION_CORNER_BOTTOMLEFT)
- type = GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMLEFT;
- else if ((sides & GTK_JUNCTION_CORNER_TOPLEFT) == GTK_JUNCTION_CORNER_TOPLEFT)
- type = GTK_CSS_IMAGE_BUILTIN_GRIP_TOPLEFT;
- else if (sides & GTK_JUNCTION_RIGHT)
- type = GTK_CSS_IMAGE_BUILTIN_GRIP_RIGHT;
- else if (sides & GTK_JUNCTION_BOTTOM)
- type = GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOM;
- else if (sides & GTK_JUNCTION_TOP)
- type = GTK_CSS_IMAGE_BUILTIN_GRIP_TOP;
- else if (sides & GTK_JUNCTION_LEFT)
- type = GTK_CSS_IMAGE_BUILTIN_GRIP_LEFT;
- else
- type = GTK_CSS_IMAGE_BUILTIN_GRIP_BOTTOMRIGHT;
- }
- else if (gtk_style_context_has_class (context, GTK_STYLE_CLASS_PANE_SEPARATOR))
+ if (gtk_style_context_has_class (context, GTK_STYLE_CLASS_PANE_SEPARATOR))
{
type = GTK_CSS_IMAGE_BUILTIN_PANE_SEPARATOR;
}